package com.frank.subject.domain.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.frank.common.entity.PageInfo;
import com.frank.subject.domain.entity.SubjectLikedBo;

/**
 * @author Frank Zou
 * @version v0.0.1
 * @date 2025/3/12
 * @description
 */
public interface SubjectLikedDomainService {

    /**
     * 添加点赞记录
     * @param subjectLikedBo 点赞记录
     * @return result
     */
    Boolean add(SubjectLikedBo subjectLikedBo);

    /**
     *  判断是否点赞
     * @param subjectId 题目 ID
     * @param userId 用户 ID
     * @return result
     */
    Boolean isLiked(String subjectId, String userId);

    /**
     * 获取点赞数量
     * @param subjectId 题目 ID
     * @return 点赞数量
     */
    Integer getLikedCount(String subjectId);

    /**
     * 同步点赞数量
     */
    void syncSubjectLiked();

    /**
     * 分页获取点赞记录
     * @param pageInfo 分页信息
     * @return 分页结果
     */
    Page<SubjectLikedBo> getSubjectLikedPage(PageInfo pageInfo);
}
